#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
	int data;
	struct LNode *next;
}LNode,*LinkList;
void InitList(LinkList &L){
	L=(LinkList)malloc(sizeof(LNode));
	L->next=NULL;
}
void creat(LinkList &L){
	LinkList s,r=L;
	int flag=1,n;
	while(flag==1){
		scanf("%d",&n);
		if(n>=0){
			s=(LinkList)malloc(sizeof(LNode));
			s->data=n;
			r->next=s;
			r=s;
		}
		else{
			flag=0;
			r->next=NULL;
		}
	}
	
}
void DispList(LinkList L){
	LinkList p=L->next;
	if(p==NULL){
        printf("NULL");
	}
	else{
        while(p->next!=NULL){
		printf("%d ",p->data);
		p=p->next;
	}
	printf("%d",p->data);
	printf("\n");
	}

}
void sort(LinkList L1,LinkList L2,LinkList L3){
	LinkList s1,s2,r,s;
	s1=L1->next;
	s2=L2->next;
    r=L3;
	while(s1!=NULL&&s2!=NULL){
		if(s1->data<s2->data){
			s=(LinkList)malloc(sizeof(LNode));
			s->data=s1->data;
			r->next=s;
			r=s;
			s1=s1->next;
		}
		else{
		   s=(LinkList)malloc(sizeof(LNode));
			s->data=s2->data;
			r->next=s;
			r=s;
			s2=s2->next;
		}
	}
	if(s1!=NULL){
		r->next=s1;
	}
	if(s2!=NULL){
		r->next=s2;
	}
    r=r->next;
}
int main(){
	LinkList L1,L2,L3;
	InitList(L1);
	InitList(L2);
	InitList(L3);
	creat(L1);
	creat(L2);
	sort(L1,L2,L3);
	DispList(L3);
	return 0;
}

